package com.project.springboot.controller;

import com.gitee.yongzhuzl.commonutil.util.result.ResponseResult;
import com.project.springboot.utils.MinioUtil;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * description: minio文件上传控制器
 * @author 朱正磊
 * @date 2024-10-14 15:21:45
 */
@RestController
@RequestMapping("/minio")
public class MinioController {

    @Resource
    public MinioUtil minioUtil;

    /**
     * description: 上传文件
     * @author 朱正磊
     * @date 2024-10-14 15:27:51
     * @param file 文件
     * @param fileName 文件名
     * @return 返回响应对象
     */
    @GetMapping("/upload")
    public ResponseResult<Void> uploadFile(MultipartFile file, String fileName) {
        minioUtil.upload(file, fileName);
        return ResponseResult.buildResult(200, "上传成功");
    }

    /**
     * description: 下载文件
     * @author 朱正磊
     * @date 2024-10-14 15:30:34
     * @param fileName 文件名
     * @return 返回响应对象
     */
    @GetMapping("/download")
    public ResponseEntity<byte[]> downloadFile(String fileName) {
        return minioUtil.download(fileName);
    }

    /**
     * description: 获取文件url地址
     * @author 朱正磊
     * @date 2024-10-14 15:36:04
     * @param fileName 文件名
     * @return 返回
     */
    @GetMapping("/getUrl")
    public ResponseResult<String> getFileUrl(String fileName) {
        String fileUrl = minioUtil.getFileUrl(fileName);
        return ResponseResult.buildSuccess(fileUrl);
    }

}
